<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			/*
			  js代码运行步骤
			  1.预解析
			  在当前作用域下,js代码执行之前，浏览器会默认把带有var和function声明的变量在内存中进行提前声明和定义
			  2.代码执行
			*/

			//-------变量预解析(变量提升)---变量的声明会被提升到当前作用域的最前面，变量的赋值不会提升-------------------------------------------------------------------------
			/*
			 var num;
			 console.log(num);//undefined
			 num = 6;
			 console.log(num);
			*/
			console.log(num); //undefined
			var num = 6;
			console.log(num);

			//-------函数预解析(函数提升)---函数的声明会被提升到当前作用域的最前面，但是不会调用-------------------------------------------------------------------------
			
			/*
			 函数声明存在 
			 var fn;
			 fn();
			*/
			
			fn();
			function fn() {
				console.log("abc");
			}
			// fn();
		</script>
	</body>
</html>
